#ifndef ICONVERTER_H_
#define ICONVERTER_H_

#include <string>
#include <PFileInfo.h>
#include "IPlugin.h"

namespace PluginSystem
{


	//! CreatePlugin
	/*!
	Funkcia sluziaca na vytvaranie instancii Converteru
	*/
	IPlugin *CreateConvertor(const char* thePluginPath);


//! IConverter rozhranie. 
/*!
 	Rozhranie na pre triedy sluziace na convertovanie z nejakeho dokumentoveho formatu na
	cisty text a opacne.
	Poskytuje rozhranie zakladnych pozadovanych funkcii 
*/
	class IConverter : public IPlugin
{
	public:
		//! Destructor
		/*!
			Virtualny destruktor triedy(rozhrania)
		*/
		virtual ~IConverter(void) {}

		//! Open
		/*!
			Sluzi na otvorenie dokumentu na konvertovanie.
			Samotny dokument je ulozeny v forme objektu PFileInfo v pameti aplikacie.
			\param theFile objekt obsahujuci dokument na konverziu
			\return true ak sa dokument uspesne otvoril, false inak
		*/
		virtual bool Open(PComunicator::PFileInfo &theFile) = 0;

	
		//! Format
		/*!
			Navrati format dokumentu pre ktory je urceny			
			\return true ak sa dokument uspesne otvoril, false inak
		*/
		virtual std::string Format() = 0;


		//! Read
		/*!
			Sluzi na precitanie dokumentu a jeho konverziu na cisty text
			\return std::wstring obsahujuci text dokumentu 
		*/
		virtual std::wstring Read() = 0;

		//! CreateHtml
		/*!
			Funkcia sluzi na prekonvertovanie povodneho dokumentu na html stranku
			\param string predstavuje cestu kam sa ma ulozit html stranka
			\return string predstavuje plnu cestu k html stranke
		*/
		virtual std::string CreateHtml(std::string thePath) = 0;     
};//IConverter


}//PluginSystem

#endif
